package com.qianxun.module.base.exception;


import lombok.Data;

/**
 * 业务中断异常，用于描述一个请求业务无法正常抵达到业务结束
 * @author huwei
 */
@Data
public class ServiceInterruptionException extends RuntimeException {

	/**
	 * 错误状态码
	 */
	private int code;
	/**
	 * 返回结果
	 */
	private Object data;

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private ServiceInterruptionException(int code, String msg ,Object data) {
		super(msg);
		this.code = code;
		this.data = data;
	}
	/**
	 * 以业务正常完成状态返回
	 * @param msg 消息
	 * @return 中断异常
	 */
	public static ServiceInterruptionException success(String msg){
		return success(msg ,null);
	}

	/**
	 * 以业务正常完成状态返回
	 * @param msg 消息
	 * @param data 返回数据
	 * @return 中断异常
	 */
	public static ServiceInterruptionException success(String msg , Object data){
		return new ServiceInterruptionException(200 ,msg ,data);
	}
	/**
	 * 业务中断
	 * @param code 错误码
	 * @param msg 消息
	 * @return 中断异常
	 */
	public static ServiceInterruptionException fail(int code , String msg){
		return fail(code, msg ,null);
	}
	/**
	 * 业务中断
	 * @param code 错误码
	 * @param msg 消息
	 * @param data 返回数据
	 * @return 中断异常
	 */
	public static ServiceInterruptionException fail(int code , String msg , Object data){
		return new ServiceInterruptionException(code, msg, data);
	}
	/**
	 * 是否正常完成状态
	 * @return
	 */
	public boolean isSuccess(){
		return code == 200;
	}
}
